home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / ai / gaf200b / example / robotarm.evl < prev    next >
Text File  |  1994-06-10  |  5KB  |  173 lines

  1. CONFIGURATION
  2.     EVAL_SAMPLE = 3;
  3.     GENE_WEIGHT_INC = 2;
  4.     MAX_BEST_ITEM = 10;             ! range 1 - 100
  5.     TEST_TIME = 2.5;                ! second
  6.     MIN_SCORE = 0.600;
  7.     EVAL_NULL_BAND = 0.02;
  8.  
  9.     MAX_RULE = 12;
  10.     MAX_CYCLE_RATE = 0.100;         ! in second
  11.     MIN_CYCLE_RATE = 0.035;         ! in second
  12. END_CONFIGURATION;
  13.  
  14. EVAL_SEGMENT Evaluation
  15.  
  16. Cycle_time      0.05
  17.  
  18. !     Name      MIN   MAX
  19. IN    Pos_error (-70.0, 70.0)
  20. IN    Current  (-1.0, 1.0)
  21. OUT   Eval_result (0, 1)
  22. OUT   Reference(0, 70);
  23. !OUT   Position (0, 70);
  24.  
  25. Local Done (0, 1)
  26. Local Rising_time (0, 3)
  27. Local Err_oscilate (0, 10)
  28. Local Cur_oscilate (0, 10)
  29. Local err (0, 70)
  30. Local cur (0, 1)
  31. Local Err_dir (-1, 1)
  32. Local Old_err_dir (-1, 1)
  33. Local Cur_dir (-1, 1)
  34. Local Old_cur_dir (-1, 1)
  35.  
  36. !        Name                     Below    Low   High  Above  Truth
  37. Symbol   Very_good   OF Rising_time (  0.0,   0.0,   1.0,   2.0,  1.0)
  38. Symbol   Good        OF Rising_time (  1.0,   2.0,   2.0,   3.0,  1.0)
  39. Symbol   OK          OF Rising_time (  2.0,   3.0,   3.0,   4.0,  1.0)
  40. Symbol   Bad         OF Rising_time (  3.0,   4.0,   4.0,   5.0,  1.0)
  41. Symbol   Very_bad    OF Rising_time (  4.0,   5.0,  10.0,  10.0,  1.0)
  42.  
  43. Symbol   Under_shoot OF Pos_error (-70.0, -70.0,  -2.0,  -1.0,  1.0)
  44. Symbol   Neg_small   OF Pos_error ( -2.0,  -1.0,  -1.0,   0.0,  1.0)
  45. Symbol   On_target   OF Pos_error ( -1.0,   0.0,   0.0,   1.0,  1.0)
  46. Symbol   Pos_small   OF Pos_error (  0.0,   1.0,   1.0,   2.0,  1.0)
  47. Symbol   Over_shoot  OF Pos_error (  1.0,   2.0,  70.0,  70.0,  1.0)
  48.  
  49. Symbol   Very_good   OF Eval_result (  0.7,   0.8,   1.0,   1.0,  1.0,  1.0)
  50. Symbol   Good        OF Eval_result (  0.5,   0.7,   0.8,   1.0,  1.0)
  51. Symbol   Mid         OF Eval_result (  0.2,   0.4,   0.6,   0.8,  1.0)
  52. Symbol   Bad         OF Eval_result (  0.1,   0.2,   0.3,   0.4,  1.0)
  53. Symbol   Very_bad    OF Eval_result (  0.0,   0.0,   0.1,   0.2,  1.0,  0.0)
  54.  
  55. Symbol   No_oscil                   (    0,     0,     1,     1,  1.0)
  56. Symbol   Few_oscil                  (    1,     2,     3,     4,  1.0)
  57. Symbol   Mid_oscil                  (    2,     3,     4,     5,  1.0)
  58. Symbol   Lot_oscil                  (    3,     4,     5,     6,  1.0)
  59. Symbol   Unstable                   (    4,     5,    10,    10,  1.0)
  60.  
  61. Initialization
  62.     Rising_time = 0;
  63.     Err_Oscilate = 0;
  64.     Cur_Oscilate = 0;
  65.     Eval_result = 0;
  66.     Done        = 0;
  67.     Old_err_dir = 0;
  68.     Old_cur_dir = 0;
  69.     Reference   = 35;
  70. BEGIN
  71.     err = pos_error;
  72.     IF pos_error < 0 THEN
  73.         err = - pos_error;
  74.     ENDIF;
  75.     IF Done = 0 THEN
  76.         IF err > 2 THEN
  77.             Rising_time = Rising_time + Delta_time;
  78.         ELSE
  79.             Done = 1;
  80.         ENDIF;
  81.     ENDIF;
  82.  
  83.     IF Pos_error = 0 THEN
  84.         Err_dir = 0;
  85.     ELSE
  86.         IF Pos_error > 0 THEN
  87.             Err_dir = 1;
  88.         ELSE
  89.             Err_dir = -1;
  90.         ENDIF;
  91.     ENDIF;
  92.     IF Old_err_dir <> 0 THEN
  93.         IF Err_dir <> Old_err_dir THEN
  94.             IF err > 0.5 THEN
  95.                 Err_Oscilate = Err_Oscilate + 1;
  96.             ENDIF;
  97.         ENDIF;
  98.     ENDIF;
  99.     Old_err_dir = Err_dir;
  100.  
  101.     cur = current;
  102.     IF current < 0 THEN
  103.         cur = - current;
  104.     ENDIF;
  105.     IF current = 0 THEN
  106.         cur_dir = 0;
  107.     ELSE
  108.         IF current > 0 THEN
  109.             cur_dir = 1;
  110.         ELSE
  111.             cur_dir = -1;
  112.         ENDIF;
  113.     ENDIF;
  114.     IF Old_cur_dir <> 0 THEN
  115.         IF cur_dir <> Old_cur_dir THEN
  116.             IF cur > 0.25 THEN
  117.                 cur_Oscilate = cur_Oscilate + 1;
  118.             ENDIF;
  119.         ENDIF;
  120.     ENDIF;
  121.     Old_cur_dir = cur_dir;
  122.  
  123. END;
  124.  
  125. IF Pos_error IS Under_shoot
  126. THEN Eval_result IS Very_bad
  127.  
  128. IF Pos_error IS Neg_small
  129. THEN Eval_result IS Bad
  130.  
  131. IF Pos_error IS On_target
  132. THEN Eval_result IS Very_good
  133.  
  134. IF Pos_error IS Pos_small
  135. THEN Eval_result IS Mid
  136.  
  137. IF Pos_error IS Over_shoot
  138. THEN Eval_result IS Very_bad
  139.  
  140. !---------------------------
  141. IF Rising_time IS Very_good
  142. THEN Eval_result IS Very_good
  143.  
  144. IF Rising_time IS Good
  145. THEN Eval_result IS Good
  146.  
  147. IF Rising_time IS OK
  148. THEN Eval_result IS Mid
  149.  
  150. IF Rising_time IS Bad
  151. THEN Eval_result IS Very_bad
  152.  
  153. IF Rising_time IS Very_bad
  154. THEN Eval_result IS Very_bad
  155.  
  156. !---------------------------
  157. IF Err_Oscilate IS No_oscil !AND Cur_Oscilate IS No_oscil
  158. THEN Eval_result IS Very_good
  159.  
  160. IF Err_Oscilate IS Few_oscil !AND Cur_Oscilate IS Few_oscil
  161. THEN Eval_result IS Good
  162.  
  163. IF Err_Oscilate IS Mid_oscil !AND Cur_Oscilate IS Mid
  164. THEN Eval_result IS Mid
  165.  
  166. IF Err_Oscilate IS Lot_oscil OR Cur_Oscilate IS Lot_oscil
  167. THEN Eval_result IS Bad
  168.  
  169. IF Err_Oscilate IS Unstable OR Cur_Oscilate IS Unstable
  170. THEN Eval_result IS Very_bad
  171.  
  172. END Evaluation;
  173.